"""
1433. 检查一个字符串是否可以打破另一个字符串
已解答
中等
相关标签
相关企业
提示
给你两个字符串 s1 和 s2 ，它们长度相等，请你检查是否存在一个 s1  的排列可以打破 s2 的一个排列，或者是否存在一个 s2 的排列可以打破 s1 的一个排列。

字符串 x 可以打破字符串 y （两者长度都为 n ）需满足对于所有 i（在 0 到 n - 1 之间）都有 x[i] >= y[i]（字典序意义下的顺序）。



示例 1：

输入：s1 = "abc", s2 = "xya"
输出：true
解释："ayx" 是 s2="xya" 的一个排列，"abc" 是字符串 s1="abc" 的一个排列，且 "ayx" 可以打破 "abc" 。
示例 2：

输入：s1 = "abe", s2 = "acd"
输出：false
解释：s1="abe" 的所有排列包括："abe"，"aeb"，"bae"，"bea"，"eab" 和 "eba" ，s2="acd" 的所有排列包括："acd"，"adc"，"cad"，"cda"，"dac" 和 "dca"。然而没有任何 s1 的排列可以打破 s2 的排列。也没有 s2 的排列能打破 s1 的排列。
示例 3：

输入：s1 = "leetcodee", s2 = "interview"
输出：true


提示：

s1.length == n
s2.length == n
1 <= n <= 10^5
所有字符串都只包含小写英文字母。
"""


class Solution(object):
    def checkIfCanBreak(self, s1, s2):
        """
        :type s1: str
        :type s2: str
        :rtype: bool
        """
        l = sorted(s1)
        r = sorted(s2)
        len1 = len(l)
        status1 = True
        status2 = True
        for i in range(len1):
            if l[i] > r[i]:
                status1 = False
        for i in range(len1):
            if l[i] < r[i]:
                status2 = False
        return status2|status1



if __name__ == '__main__':
    #事例2
    s1 = "abe"
    s2 = "acd"
    print(Solution().checkIfCanBreak(s1,s2))


    # s1 = "dabc"
    # s1 = sorted(s1)
    # print(s1)
    #
    # s2 = [1,3,2]
    # s2.sort(reverse=True)
    # print(s2)
    #
    # s3 = [1,3,2]
    # sorted(s3,reverse=True) # 不修改原数组
    # print(s3)
    # s3 = sorted(s3,reverse=True) # 不修改原数组
    # print(s3)